<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        var myObject = {
            a:2
        };

        // in操作符会检查属性是否存在对象及其[[prototype]]原型链中
        // in操作符看起来可以检查容器内是否有某个值
        // 但它实际上检查的是某个属性名是否存在 对于这一段代码
        //(4 in [2,4,6]) 会返回false 因为这个数组中包含的属性名是0,1,2 并没有4
        console.log("a" in myObject);
        console.log("b" in myObject);

        // hasOwnProperty(...)只会检查属性是否在myObject对象中
        // 不会检查[[prototype]]链
        console.log(myObject.hasOwnProperty("a"));
        console.log(myObject.hasOwnProperty("b"));
        // 对于DMZ空对象来说 创建后并不会链接到[[prototype]]链中 
        var myObject2 = Object.create( null );
        // 所以借用基础的hasOwnProperty(...)方法并把它显式绑定到这个DMZ对象上
        Object.prototype.hasOwnProperty.call(myObject2,"a");
    </script>
</body>
</html>